www.gusucode.com > VC++ 宾馆管理系统(MSSQL) > VC++ 宾馆管理系统(MSSQL)/gusucode/Code/BookInDLG.cpp

    //Download by http://www.NewXing.com
// BookInDLG.cpp : implementation file

#include "stdafx.h"
#include "hotel_mis.h"
#include "BookInDLG.h"
#include "Hotel_MISView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CBookInDLG dialog


CBookInDLG::CBookInDLG(CWnd* pParent /*=NULL*/)
	: CDialog(CBookInDLG::IDD, pParent)
{
	//{{AFX_DATA_INIT(CBookInDLG)
	m_sRoomNo = _T("");
	m_sRoomType = _T("");
	m_sRoomPosition = _T("");
	m_sRoomPrice = _T("");
	m_sRoomMemo = _T("");
	m_sName = _T("");
	m_sID = _T("");
	m_tInDAte = COleDateTime::GetCurrentTime();
	m_sDiscount = _T("");
	m_sMemo = _T("");
	//}}AFX_DATA_INIT
}


void CBookInDLG::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBookInDLG)
	DDX_CBString(pDX, IDD_BOOKIN_ROOMNO, m_sRoomNo);
	DDX_Text(pDX, IDD_BOOKIN_ROOMTYPE, m_sRoomType);
	DDX_Text(pDX, IDD_BOOKIN_ROOMPOSITION, m_sRoomPosition);
	DDX_Text(pDX, IDD_BOOKIN_ROOMPRICE, m_sRoomPrice);
	DDX_Text(pDX, IDD_BOOKIN_ROOMMEMO, m_sRoomMemo);
	DDX_Text(pDX, IDD_BOOKIN_NAME, m_sName);
	DDX_Text(pDX, IDD_BOOKIN_ID, m_sID);
	DDX_DateTimeCtrl(pDX, IDD_BOOKIN_INDATE, m_tInDAte);
	DDX_Text(pDX, IDD_BOOKIN_DISCOUNT, m_sDiscount);
	DDX_Text(pDX, IDD_BOOKIN_MEMO, m_sMemo);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBookInDLG, CDialog)
	//{{AFX_MSG_MAP(CBookInDLG)
	ON_CBN_SELCHANGE(IDD_BOOKIN_ROOMNO, OnRoomNoSelChange)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBookInDLG message handlers

BOOL CBookInDLG::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	((CEdit*)GetDlgItem(IDD_BOOKIN_NAME))->SetLimitText(20);
	((CEdit*)GetDlgItem(IDD_BOOKIN_ID))->SetLimitText(18);
	
	
	// TODO: Add extra initialization here
	if (m_bAppend)
	{		
	    // Update Dialog Caption
		SetWindowText(_T("添加订房信息"));
		
		// Init Combobox
		_variant_t strQuery, Holder;	
		strQuery = "select * from rooms where putup=0 or putup is NULL";
	    theApp.ADOExecute(theApp.m_pADOSet, strQuery);
	    int iCount = theApp.m_pADOSet->GetRecordCount();
		theApp.m_pADOSet->MoveFirst();
		for (int i=0; i<iCount; i++)
		{
		    Holder = theApp.m_pADOSet->GetCollect("roomNo");
	        ((CComboBox*)GetDlgItem(IDD_BOOKIN_ROOMNO))->InsertString(i, Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder);
		    // Get other onfo to display
			if ( 0==i )
			{
				// Get RoomType
				Holder = theApp.m_pADOSet->GetCollect("roomtype");
				m_sRoomType = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
                // Get roomposition
				Holder = theApp.m_pADOSet->GetCollect("roomposition");
				m_sRoomPosition = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
                // Get roomprice
				Holder = theApp.m_pADOSet->GetCollect("roomprice");
				m_sRoomPrice.Format("%.2f", Holder.dblVal);
                // Get roommemo
				Holder = theApp.m_pADOSet->GetCollect("roommemo");
				m_sRoomMemo = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
			}			
			theApp.m_pADOSet->MoveNext();
		}
	    ((CComboBox*)GetDlgItem(IDD_BOOKIN_ROOMNO))->SetCurSel(0);
	}
	else
	{
		// Get Old ID and RoomNo
        m_sOldID = m_sID;
		m_sOldRoomNo = m_sRoomNo;
		
		// Update Dialog Caption
		SetWindowText(_T("修改订房信息"));
        
    	// Init Combobox
		_variant_t strQuery, Holder;	
		CString str;
		int iSel = 0;
		strQuery = "select * from rooms where putup=0 or putup is NULL";
	    theApp.ADOExecute(theApp.m_pADOSet, strQuery);
	    int iCount = theApp.m_pADOSet->GetRecordCount();
		theApp.m_pADOSet->MoveFirst();
		for (int i=0; i<iCount; i++)
		{
		    Holder = theApp.m_pADOSet->GetCollect("roomNo");
	        str = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
			((CComboBox*)GetDlgItem(IDD_BOOKIN_ROOMNO))->InsertString(i, str);
		    
			// Get other onfo to display
			if ( str==m_sRoomNo )
			{
				// Get RoomType
				Holder = theApp.m_pADOSet->GetCollect("roomtype");
				m_sRoomType = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
                // Get roomposition
				Holder = theApp.m_pADOSet->GetCollect("roomposition");
				m_sRoomPosition = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
                // Get roomprice
				Holder = theApp.m_pADOSet->GetCollect("roomprice");
				m_sRoomPrice.Format("%.2f", Holder.dblVal);
                // Get roommemo
				Holder = theApp.m_pADOSet->GetCollect("roommemo");
				m_sRoomMemo = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;

				iSel = i;
			}			
			theApp.m_pADOSet->MoveNext();
		}
	    ((CComboBox*)GetDlgItem(IDD_BOOKIN_ROOMNO))->SetCurSel(iSel);
	}
	
	UpdateData(false);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CBookInDLG::OnRoomNoSelChange() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	_variant_t strQuery, Holder;	
	strQuery = "select * from rooms where roomNO='"+m_sRoomNo+"'";
	theApp.ADOExecute(theApp.m_pADOSet, strQuery);
    // Get RoomType
	Holder = theApp.m_pADOSet->GetCollect("roomtype");
	m_sRoomType = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
    // Get roomposition
	Holder = theApp.m_pADOSet->GetCollect("roomposition");
	m_sRoomPosition = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
    // Get roomprice
	Holder = theApp.m_pADOSet->GetCollect("roomprice");
	m_sRoomPrice.Format("%.2f", Holder.dblVal);
    // Get roommemo
	Holder = theApp.m_pADOSet->GetCollect("roommemo");
	m_sRoomMemo = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder;
    
    UpdateData(false);
}

void CBookInDLG::OnOK() 
{
	// TODO: Add extra validation here
	UpdateData(true);
	
	m_sName.TrimRight(" ");
    m_sID.TrimRight(" ");
	m_sDiscount.TrimRight(" ");
	m_sMemo.TrimLeft(" ");

	// Make sure all needed info is available
	CString sWarning="";
	if ( ""==m_sName ) sWarning=_T("顾客姓名");
    else if ( ""==m_sID ) sWarning=_T("身份证号码");
	else if ( ""==m_sDiscount ) sWarning=_T("折扣");
	
	if ( ""!=sWarning ) 
	{
	   sWarning += _T("不能为空");
	   AfxMessageBox(sWarning, MB_ICONEXCLAMATION);
	   return;
	}
	
	float fDiscount=atof(m_sDiscount);
	if ( 0==fDiscount )  
	{
		AfxMessageBox(_T("折扣:请输入非零数字"), MB_ICONEXCLAMATION);
	    return;
	}
	m_sDiscount.Format("%.2f", fDiscount);
	
	if ( fDiscount>100 ) 
	{
	    AfxMessageBox(_T("折扣溢出,请不要超过100"), MB_ICONEXCLAMATION);
		return;
	}
	
	_variant_t strQuery;
	
	// Delete Old Record
	if ( !m_bAppend )
	{
		strQuery = "delete from bookin where customID='"+m_sOldID+"' and roomno='"+m_sOldRoomNo+"'";
        theApp.ADOExecute(theApp.m_pADOSet, strQuery);
	}
    
	// Check Record Unique
    strQuery = "select * from bookin where roomno='"+m_sRoomNo+"'";
    theApp.ADOExecute(theApp.m_pADOSet, strQuery);
    int iCount  = theApp.m_pADOSet->GetRecordCount();
	if ( 0!=iCount ) 
	{
	    AfxMessageBox(_T("该房间已经登记入住!"), MB_ICONEXCLAMATION);
		return;
	}
				
	// Generate Serial No.
	CString sSN;
	COleDateTime today = COleDateTime::GetCurrentTime();
	sSN = today.Format("%y%m%d%H%M%S");

    // Get Indate
	CString sInDate;
	sInDate = m_tInDAte.Format("%Y-%m-%d");
		
	// Insert Record
	strQuery = "insert bookin (bookno, customname, customID, roomno, indate, discount, inmemo) \
	       	    values ('"+sSN+"', '"+m_sName+"',  '"+m_sID+"', '"+m_sRoomNo+"', '"+sInDate+"', "+m_sDiscount+", '"+m_sMemo+"')";
    if ( theApp.ADOExecute(theApp.m_pADOSet, strQuery) ) 
	{
		if ( m_bAppend ) 
		{
			AfxMessageBox(_T("添加记录成功!"), MB_ICONINFORMATION);
		    // Clear All Input
			m_sName=m_sID=m_sDiscount=m_sMemo="";
            ((CComboBox*)GetDlgItem(IDD_BOOKIN_ROOMNO))->SetCurSel(0);
			UpdateData(false);
		    //Update Room Info
            strQuery = "update rooms set putup=1 where roomNo='"+m_sRoomNo+"'";
		    theApp.ADOExecute(theApp.m_pADOSet, strQuery);
		}
		else AfxMessageBox(_T("修改记录成功!"), MB_ICONINFORMATION);
	}
	else 
	{
		if ( m_bAppend ) AfxMessageBox(_T("添加记录失败!"), MB_ICONEXCLAMATION);
		else AfxMessageBox(_T("修改记录失败!"), MB_ICONEXCLAMATION);
	    
	}
		
	// Refresh BookIn List
	strQuery = "select * from bookin where checkdate is NULL";
	CHotel_MISView* p = (CHotel_MISView*)(((CMainFrame*)AfxGetMainWnd())->GetActiveView());
	p->RefreshBookIn(strQuery);
	
	if (!m_bAppend) CDialog::OnOK();
}